function Cursor_(){
    this.$initRenderable();
    this.m_blinkTimer = null;
    this.m_blink = Utils.bind(this._blink, this);
}

Cursor_.prototype = {
    _TPL_ELM: '<div id="#{id}" class="QECursor" style="visibility: hidden;"></div>',
    $renderHTML: function (){
        return Utils.format(this._TPL_ELM, { id: this.$id() });
    },
    setCursor: function (point, height){
        var elm = this.$elm();
        elm.style.left = point.x + 'px';
        elm.style.top = point.y + 'px';
        elm.style.height = height + 'px';
    },
    restart: function (){
        this.stop();
        this.show();
        this.m_blinkTimer = setInterval(this.m_blink, 1000);
    },
    _blink: function (){
        this.hide();
        var self = this;
        setTimeout(function (){
            self.show();
        }, 400);
    },
    show: function (){
        this.$elm().style.visibility = 'visible';
    },
    hide: function (){
        this.$elm().style.visibility = 'hidden';
    },
    stop: function (){
        clearTimeout(this.m_blinkTimer);
    }
};

Utils.extend(Cursor_, Renderable);